Multifaceted system capabilities analysis

ABSTRACT

Methods and systems for obtaining the performance characteristics of a computing product are described. Obtaining a computing product&#39;s attributes, capabilities, and features includes assessing the computing product to determine the product&#39;s attributes, capabilities, and features. Once the assessment is completed, the assessment data is recorded and stored for future applications. The assessments can be performed by the operating system through an assessment tool. Assessments can be performed on various computing products including personal computers, computer components, clusters of computers, and servers.

REFERENCE TO CO-PENDING APPLICATIONS

This is a continuation-in-part application and claims priority to U.S.application Ser. No. 10/609,187 filed Jun. 26, 2003, entitled“Hardware/Software Capability Rating System,” which is incorporatedherein by reference in its entirety.

FIELD OF THE INVENTION

The present invention relates generally to determining thecharacteristics of computing products, and more particularly, toassessing computer products to determine their performancecharacteristics.

BACKGROUND OF THE INVENTION

Determination of a computer system's performance characteristicsincluding its attributes, capabilities, and features can be acomplicated task. Because software, including but not limited to,applications, middleware, operating systems, drivers, and softwarecomponents vary in their sensitivity to various attributes,capabilities, and features of the underlying computer system, knowingsuch information can be useful in selecting software. For example, somesoftware may scale better on systems with more computational power—oftencalled CPU or processor performance. Other software may be moredependant on the performance of the graphics and video sub-system or thestorage sub-system, for example. Thus, knowing the system's attributes,capabilities, and features is invaluable when selecting new software.

Consumers often purchase computer systems based on the computer system'sability to run a particular piece of software or class of software.Thus, the need to understand computer system performance as it relatesto how well a system will run software is an important task. There aremany characteristics of a computer system that can affect theperformance and operation of software. Characterizing these performancecharacteristics is typically the function of applications called“benchmarks” which are intended to measure performance of a computersystem.

While benchmarks are useful, they often are (1) hard to use, (2) notintegrated within an operating system product or platform, and (3) notreadily available to those needing to evaluate computer performance.Since they are not built into or provided with an operating systemplatform, they cannot be used by software to make static or dynamicoperational or configuration decisions based on the computer system'sattributes, capabilities, and features.

In view of the foregoing, there is a need for systems and methods thatovercome the limitations and drawbacks of the prior art.

SUMMARY OF THE INVENTION

The following summary provides an overview of various aspects of theinvention. It is not intended to provide an exhaustive description ofall of the important aspects of the invention, nor to define the scopeof the invention. Rather, this summary is intended to serve as anintroduction to the detailed description and figures that follow.

Determination of a computer product's performance characteristics can beaccomplished by determining the computer product's attributes,capabilities, and features. A computer product's attributes can bedetermined through a query of the computing product and recorded forcomparison. Further, an inventory of the computer product (or computerhardware component) can be performed, yielding a set of features. Theinventory can include an inventory of product's components and featuresof the components. The computer product's capability can be tested,yielding capability results for a set of attributes or features.

The determination of the attributes, capabilities, and features of thecomputer product can be accomplished through the use of an assessmenttool. An exemplary assessment tool can be part of the operating systemplatform. The assessment tool can gather information (e.g., the computersystem's attributes, capabilities, and features) desirable for people orsoftware itself to make decisions, comparisons, and judgments withrespect to how well a computer system will run software. Such decisions,comparisons, and judgments can be made statically (e.g., once) ordynamically (that is, as a system is running). The assessment tool canalso be a software program downloaded and/or stored for executionlocally or run from a remote computer via a web or network interface,for example.

An example assessment tool is not solely for use with individualcomputer products. The assessment tool can also be used to assess acluster of computing products, for example, a cluster of computers, todetermine its performance characteristics based on its attributes,capabilities, and features. Further, the assessment tool can be used inassess servers, for example.

Once the data is obtained through the use of an assessment tool, thedata can be recorded and stored. The stored data can be used at latertimes to assess whether the particular computing device is compatiblewith, for example, a piece of software. For example, the data may beaccessed directly by a piece of software when a user attempts to loadthe software onto the computing device. The data can also be accessedthrough an interface by the user, for example, through the control panelof the operating system. The data may also be accessed by other systemsor entities via a network connection or other communication mechanism.

To make decisions simple, especially for users not well versed in highlytechnical details, such assessment data could also be aggregated into amore simple form. Such aggregation could occur via many methodsincluding averaging and using a decision tree or matrix. Further, theassessment data may be used to rate a computer product based on itsperformance characteristics. Such rating may result in the computingproduct receiving a rating or score based on its perceived performancecharacteristic.

Additional features and advantages of the invention will be madeapparent from the following detailed description of illustrativeembodiments that proceeds with reference to the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing summary, as well as the following detailed description ofpreferred embodiments, is better understood when read in conjunctionwith the appended drawings. For the purpose of illustrating theinvention, there is shown in the drawings exemplary constructions of theinvention; however, the invention is not limited to the specific methodsand instrumentalities disclosed. In the drawings:

FIG. 1 is a block diagram showing an exemplary computing environment inwhich aspects of the invention may be implemented;

FIG. 2 is a block diagram of an exemplary computing environment that maybe used for obtaining data for determining a computer system'sattributes, capabilities, and features in accordance with the presentinvention;

FIG. 3 is a block diagram of another exemplary computing environmentthat may be used for obtaining data for determining a computer system'sattributes, capabilities, and features in accordance with the presentinvention;

FIG. 4 is a flow diagram of an exemplary method for determining acomputer system's attributes, capabilities, and features in accordancewith the present invention;

FIG. 5 is a flow diagram of an exemplary method for assessing a computerproduct and using the assessment data in accordance with the presentinvention; and

FIG. 6 is a flow diagram of an exemplary method for utilizing assessmentdata of a computer product when attempting to access software inaccordance with the present invention.

DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS

Overview

Systems and methods for assessing a computing product's performancecharacteristics, including its attributes, capabilities, and featuresare described. The assessment data is determined and stored so thatusers or software applications can make decisions with respect to howwell a computer product will run or perform an application. Further, theassessment data can be used to pre-populate new computing products. Theassessment data can also be used to determine a performancecharacteristic rating.

The assessment tool can measure, assess, and enumerate—statically ordynamically—a plurality of attributes for computer system components,the system as a whole, or for other computing products includingcomputer system clusters, and servers, for example. An attribute may bedefined as an inherent system characteristic, or the degree to which asystem adheres to a standard. Attributes often contribute directly tothe ability of a system to effectively run a particular piece ofsoftware or a class of software. Further, attributes strongly influencesystem purchasing and configuration decisions. Attributes are alsothings that are generally measured, in contrast to being detected orenumerated. Attributes cannot be determined before a system is assembledand configured as it is intended to be operated. Attributes are oftenexpressed as (1) a matter of degree or a point on a continuum, (2) ameasure of quality, (3) a degree of, or measure of, conformance to astandard or common practice, or (4) a unit of measure (e.g., inches,bytes per second, frequency, operations per second, average CPUutilization, megabytes, bit width), for example. Performance is acommonly measured and expressed attribute. It is a key attribute of manyMicrosoft Windows PC system components including the processor, graphicsand video sub-system, and a storage sub-system.

Assessment of the attributes may include, but is not limited to, thestorage components such hard drives, optical drives, or nonvolatilememory, a systems microprocessor or microprocessors and sub-componentsincluding but not limited to caches, integer unit, and floating pointunit, a systems main memory (i.e., the RAM), and the video and graphicssub-system (i.e., the graphics card, UMA, or embedded graphics).

An exemplary assessment tool can desirably measure, assess andenumerate—statically or dynamically—a plurality of capabilities ofcomputer system components, the system as a whole, or other computingproducts including computer system clusters, and servers, for example. Acapability is a product or system's ability to effectively perform aspecific function or task or class of functions or tasks. Capabilitiesare often present or absent but can also be present to some matter ofdegree, measure, or metric. To be present, a capability requires: (1) aspecified (or minimum) level of one or more attributes, (2) the presenceof one or more specified features, and (3) a directly measured ordetected ability or expression of a specific function or task or classof functions or tasks.

An assessment of the computing product's capabilities may include, butare not limited to determining whether the computing product has theability to play different types of videos, the ability to connect to theinternet, the ability to provide user interface elements with variouslevels of detail and sophistication, and the ability to run specificsoftware or classes of software (including but not limited to games,multi-media applications, data analysis software, CAD software,operating system components, middleware, and drivers).

Further, an assessment tool can desirably detect or enumerate featuresof computer system components, the system as a whole, or other computingproducts including computer system clusters, and servers, for example. Afeature is generally a prominent or distinctive system part, component,or characteristic. Features are either present or absent. Features arenot measured like attributes, they are detected or enumerated. Examplesof features include, but are not limited to (1) USB 2.0, (2) HyperThreading technology, (3) AMD64, (4) 1394, (5) dual channel DDR 400memory, (6) Card Bus, (7) AMD PowerNow! technology, (8) Intel Speed Steptechnology, (9) ACPI 2.0, (10) memory size of at least 512 MB, (11)video memory size at least 128 MB, (12) UMA Graphics, (13) DVD player orrecorder, (14) 2.0 Shader Support, (15) MMX, SSE1, SSE2, KNI, 3 DNow,and (16) support for 1024×768 screen resolution.

In some embodiments, an assessment tool may be part of the operatingsystem. An operating system may be defined as the foundation software ofa computer system responsible for controlling the execution of programsand providing the necessary services to do so. An operating system may,for example, schedules tasks, allocate storage, handle the interface toperipheral hardware, and present a default interface to the user when noapplication program is running. The operating system may also, forexample, oversee the basic hardware resources of a computer such asdisks, memory devices, the keyboard, the screen, and CPU time. Forexample, an operating system running on a PC includes an assessment toolof the present invention which directs the assessment of the computingproduct in order to determine its performance characteristics. Theassessment tool also can update assessment data for the computingproduct when, for example, the computing product is upgraded. Othertriggers for the assessment tool to initiate a new assessment caninclude when (1) a new piece of software is downloaded/loaded onto thecomputing system, (2) the operating system detects a new piece ofhardware or software, and (3) the user requests a new assessment to beperformed. The assessment results can be viewed by the user through aninterface or tool in the control panel of the operating system, forexample.

Once the data is obtained through the use of the assessment tool, thedata can be recorded and stored. The data can be used collectively orindividually by the operating system, software or a person in order toaid in making decisions or judgments with respect to for example: (1)what software can be effectively or correctly installed on a system, (2)how the operating system should configure itself (e.g., should somefeatures be turned on or off based on the capability of the system toeffectively operate), (3) how to-judge the relative or absoluteperformance, features, and capability of a system component or thesystem as a whole versus other components or systems, (4) how thehardware can or should be changed to modify the capability orperformance of the system as measured and expressed in terms of thediscrete data produced from the assessments or the aggregated ortransformed data produced by the policy engine from the discrete data,and (5) input into a capability rating system (CRS) for assigning of arating to the computing product.

Exemplary Computing Environment

FIG. 1 illustrates an example of a suitable computing system environment100 in which the invention may be implemented. The computing systemenvironment 100 is only one example of a suitable computing environmentand is not intended to suggest any limitation as to the scope of use orfunctionality of the invention. Neither should the computing environment100 be interpreted as having any dependency or requirement relating toany one or combination of components illustrated in the exemplaryoperating environment 100.

The invention is operational with numerous other general purpose orspecial purpose computing system environments or configurations.Examples of well known computing systems, environments, and/orconfigurations that may be suitable for use with the invention include,but are not limited to, personal computers, server computers, hand-heldor laptop devices, multiprocessor systems, microprocessor-based systems,set top boxes, programmable consumer electronics, network PCs,minicomputers, mainframe computers, distributed computing environmentsthat include any of the above systems or devices, and the like.

The invention may be described in the general context ofcomputer-executable instructions, such as program modules, beingexecuted by a computer. Generally, program modules include routines,programs, objects, components, data structures, etc. that performparticular tasks or implement particular abstract data types. Theinvention may also be practiced in distributed computing environmentswhere tasks are performed by remote processing devices that are linkedthrough a communications network or other data transmission medium. In adistributed computing environment, program modules and other data may belocated in both local and remote computer storage media including memorystorage devices.

With reference to FIG. 1, an exemplary system for implementing theinvention includes a general purpose computing device in the form of acomputer 110. Components of computer 110 may include, but are notlimited to, a processing unit 120, a system memory 130, and a system bus121 that couples various system components including the system memoryto the processing unit 120. The system bus 121 may be any of severaltypes of bus structures including a memory bus or memory controller, aperipheral bus, and a local bus using any of a variety of busarchitectures. By way of example, and not limitation, such architecturesinclude Industry Standard Architecture (ISA) bus, Micro ChannelArchitecture (MCA) bus, Enhanced ISA (EISA) bus, Video ElectronicsStandards Association (VESA) local bus, and Peripheral ComponentInterconnect (PCI) bus (also known as Mezzanine bus).

Computer 110 typically includes a variety of computer readable media.Computer readable media can be any available media that can be accessedby computer 110 and includes both volatile and nonvolatile media,removable and non-removable media. By way of example, and notlimitation, computer readable media may comprise computer storage mediaand communication media. Computer storage media includes both volatileand nonvolatile, removable and non-removable media implemented in anymethod or technology for storage of information such as computerreadable instructions, data structures, program modules or other data.Computer storage media includes, but is not limited to, RAM, ROM,EEPROM, flash memory or other memory technology, CD-ROM, digitalversatile disks (DVD) or other optical disk storage, magnetic cassettes,magnetic tape, magnetic disk storage or other magnetic storage devices,or any other medium which can be used to store the desired informationand which can accessed by computer 110. Communication media typicallyembodies computer readable instructions, data structures, programmodules or other data in a modulated data signal such as a carrier waveor other transport mechanism and includes any information deliverymedia. The term “modulated data signal” means a signal that has one ormore of its characteristics set or changed in such a manner as to encodeinformation in the signal. By way of example, and not limitation,communication media includes wired media such as a wired network ordirect-wired connection, and wireless media such as acoustic, RF,infrared and other wireless media. Combinations of any of the aboveshould also be included within the scope of computer readable media.

The system memory 130 includes computer storage media in the form ofvolatile and/or nonvolatile memory such as ROM 131 and RAM 132. A basicinput/output system 133 (BIOS), containing the basic routines that helpto transfer information between elements within computer 110, such asduring start-up, is typically stored in ROM 131. RAM 132 typicallycontains data and/or program modules that are immediately accessible toand/or presently being operated on by processing unit 120. By way ofexample, and not limitation, FIG. 1 illustrates operating system 134,application programs 135, other program modules 136, and program data137.

The computer 110 may also include other removable/non-removable,volatile/nonvolatile computer storage media. By way of example only,FIG. 1 illustrates a hard disk drive 140 that reads from or writes tonon-removable, nonvolatile magnetic media, a magnetic disk drive 151that reads from or writes to a removable, nonvolatile magnetic disk 152,and an optical disk drive 155 that reads from or writes to a removable,nonvolatile optical disk 156, such as a CD-ROM or other optical media.Other removable/non-removable, volatile/nonvolatile computer storagemedia that can be used in the exemplary operating environment include,but are not limited to, magnetic tape cassettes, flash memory cards,digital versatile disks, digital video tape, solid state RAM, solidstate ROM, and the like. The hard disk drive 141 is typically connectedto the system bus 121 through a non-removable memory interface such asinterface 140, and magnetic disk drive 151 and optical disk drive 155are typically connected to the system bus 121 by a removable memoryinterface, such as interface 150.

The drives and their associated computer storage media, discussed aboveand illustrated in FIG. 1, provide storage of computer readableinstructions, data structures, program modules and other data for thecomputer 110. In FIG. 1, for example, hard disk drive 141 is illustratedas storing operating system 144, application programs 145, other programmodules 146, and program data 147. Note that these components can eitherbe the same as or different from operating system 134, applicationprograms 135, other program modules 136, and program data 137. Operatingsystem 144, application programs 145, other program modules 146, andprogram data 147 are given different numbers here to illustrate that, ata minimum, they are different copies. A user may enter commands andinformation into the computer 110 through input devices such as akeyboard 162 and pointing device 161, commonly referred to as a mouse,trackball or touch pad. Other input devices (not shown) may include amicrophone, joystick, game pad, satellite dish, scanner, or the like.These and other input devices are often connected to the processing unit120 through a user input interface 160 that is coupled to the systembus, but may be connected by other interface and bus structures, such asa parallel port, game port or a universal serial bus (USB). A monitor191 or other type of display device is also connected to the system bus121 via an interface, such as a video interface 190. In addition to themonitor, computers may also include other peripheral output devices suchas speakers 197 and printer 196, which may be connected through anoutput peripheral interface 195.

The computer 110 may operate in a networked environment using logicalconnections to one or more remote computers, such as a remote computer180. The remote computer 180 may be a personal computer, a server, arouter, a network PC, a peer device or other common network node, andtypically includes many or all of the elements described above relativeto the computer 110, although only a memory storage device 181 has beenillustrated in FIG. 1. The logical connections depicted include a localarea network (LAN) 171 and a wide area network (WAN) 173, but may alsoinclude other networks. Such networking environments are commonplace inoffices, enterprise-wide computer networks, intranets and the Internet.

When used in a LAN networking environment, the computer 110 is connectedto the LAN 171 through a network interface (wired or wireless) oradapter 170. When used in a WAN networking environment, the computer 110typically includes a modem 172 or other means for establishingcommunications over the WAN 173, such as the Internet. The modem 172,which may be internal or external, may be connected to the system bus121 via the user input interface 160, or other appropriate mechanism. Ina networked environment, program modules depicted relative to thecomputer 110, or portions thereof, may be stored in the remote memorystorage device. By way of example, and not limitation, FIG. 1illustrates remote application programs 185 as residing on memory device181. It will be appreciated that the network connections shown areexemplary and other means of establishing a communications link betweenthe computers may be used.

Exemplary Embodiments

FIG. 2 is a block diagram of an exemplary computing environment 200using an assessment tool to obtain data for determination of a computersystem's attributes, capabilities, and features in accordance with thepresent invention. The policy data 220 stores the information used bythe policy engine 230 to make decisions on when and how to run theassessments 210 of the computing product. The assessments 210 may berun, for example, at predefined times, on demand by a user or software,when certain predefined events occur, when the policy engine detectsdynamic conditions that warrant running the assessments 210, or whencommands via a network or other communications mechanisms direct anassessment 210 to be performed.

The policy engine 230 can run one, some, or all of the assessments 210based on the command. Each assessment 210, when run, can be performed ina parameterized fashion (i.e., the assessment 210 is not fixed but maybe determined by the policy engine 230 using information from the policydata 220, the data store 240 or from software 250, or the operatingsystem (OS) 270 directly or via the application program interface (API)260). Such information could also derive from a user or other externalsource such as a network or other communications mechanism.

There may be a plurality of assessments 210—five are shown in FIG. 2.The assessments 210 shown in FIG. 2 only represent exemplaryassessments, and they do not represent the full scope of the assessmentsthat can be used in the present invention. The assessments 210 gatherinformation on computing products or components. The assessments 210 mayreturn data describing the product's attributes, capabilities, andfeatures as defined above. The assessment tool may use any number oftechniques to gather the data such as measuring, enumerating, and/ordetecting. The assessments 210 may use other software components such asdrivers, middleware, the operating system 270 itself, or otherapplications that may interface directly with hardware to collect thedata.

Once an assessment 210 is performed, the policy engine 230 can store theassessment data in a data store 240 that can be accessed directly bysoftware 250 or via the API 260. Software components 250 can requestassessments 210 be made and otherwise control the operation of theassessments 210 via the API 260. Such data could also be made availableto other outside systems or applications, for example, a softwarepackage 280 via a network connection or other communication mechanisms.Further, the policy engine 230 can also take the discrete data generatedby the assessments 210 from the data store 240 and use a decision tree,matrix or other form of data to aggregate, average or otherwisetransform the discrete data into another form. Such data can besubsequently saved back in the data store 240. Software 250 can accessthis aggregated or transformed data directly from the data store 240 orvia an API 260.

Software 250 can request assessments be made and otherwise control theoperation of the assessments via the API 260 and the policy engine 230.The policy engine 230 can also control access to the policy data 220 andthe data store 240 providing mechanisms to read, modify, add, and deleteinformation in the policy data 220 and/or the data store 230.

FIG. 3 is a block diagram of another exemplary computing environment 300using an assessment tool to obtain data for determination of a computersystem's attributes, capabilities, and features in accordance with thepresent invention. FIG. 3 contains elements similar to those describedabove with respect to FIG. 2. These elements are labeled identically andtheir description is omitted for brevity. FIG. 3 functions substantiallyidentical to the exemplary computing environment of FIG. 2, except theoperating system 370 encompasses the API 360 in the exemplary computingenvironment 300.

FIG. 4 is a flow diagram of an exemplary method for determining acomputer system's attributes, capabilities, and features in accordancewith the present invention. The process begins with an event trigger 410that can include, but is not limited to, a user requesting performanceof an assessment, the operating system requesting performance of anassessment, and a software program requesting performance of anassessment.

At step 420, assessment tool determines how the assessments are to beperformed by reviewing the protocol set by, for example, the data store,the API, the OS, the user, and the communications channel at step 430.The assessment considers whether there was a direct command requestingthe assessment at step 440.

If there was a direct command at step 440, then the tool will run theassessments at step 450 in accordance with the direct command. Once theassessments are completed, the assessment tool determines if theassessments were successfully completed at step 460. If the assessmentswere successfully completed at step 460, then the assessment data can beeither saved or reported/returned at step 470. At step 480, theassessment tool determines whether the data was requested topre-populate other computing products. If the assessment data wasdetermined for pre-population, then the assessment data will be copiedto other identical products and saved locally at 490. The assessmentmethod then concludes at step 499. If it is determined that theassessment data was not requested for pre-population at step 480, themethod concludes at step 499.

If the assessment command was not a direct command at step 440, then theassessment tool will use policies and decision tables to determine theparameters for running the assessment at step 445. Subsequent to usingthe policies and decision tables at step 445, the assessment tool willcontinue with the assessments at step 450. If the assessments are notsuccessfully completed at step 460, the assessment tool, based onpredetermined factors, or the user, based on preference, decides whetherto perform the assessments again at step 465. If the assessment tool,based on predetermined factors, or the user based on preference, decidesto run the assessments again at step 465, the process restarts with thedetermination of whether there was a direct command requesting theassessment at step 440. If the assessment tool, based on predeterminedfactors, or the user based on preference, decides not to run theassessments again at step 465, the process concludes at step 499.

FIG. 5 is a flow diagram of an exemplary method for assessing a computerproduct and using the assessment data in accordance with the presentinvention. The method begins at step 510 which may occur, for example,based on a triggering of the method. Exemplary triggers include userdirection, software requests, or some other triggering factor. Theassessment tool performs an assessment of the computing product at step520. The assessments can include determining the attributes,capabilities, and features of the computing product.

Once the assessments are performed at step 520, the assessment data isrecorded and stored at step 530. The data may be stored, for example, ina data store. The stored assessment data can then be used subsequentlyat step 540 by, for example, an operation system attempting to evaluatesystem compatibility. The stored assessment data can also be used forpre-population of other identical computing products. Further, thestored assessment data can be input into a capability rating system ortool to determine a rating of a particular computing device. The storedassessment data also can be used by software or the operating system towarn users when they attempt to run applications or open files that thecomputing device may not be able to support.

FIG. 6 is a flow diagram of an exemplary method for utilizing assessmentdata of a computer product when attempting to access software inaccordance with the present invention. At step 610, method begins basedon a trigger. The assessment tool performs an assessment of thecomputing product at step 620. The assessments can include determiningthe attributes, capabilities, and features of the computing product.Once the assessments are performed at step 620, the assessment data isrecorded and stored at step 630.

Subsequently, a user may attempt to, for example, open a file. At step640, the computing product determines whether it supports the file. Ifthe computing product can support the file, then at step 680 the file isrun and the method concludes at step 699. If, however, the computingproduct cannot support the file, then at step 650 a warning is displayedor otherwise indicated or provided, and at step 660 the user decideswhether to continue and run the file or whether to abort the action. Ifthe user decides to continue with the opening of the file at step 660, asecond warning is displayed and the computing product will attempt torun the file at step 670. The method then concludes at step 699.

If the user decides not to continue with the opening of the file at step660, then the file is aborted at 662. The user is desirably given theopportunity to upgrade the computing product at step 664. If the userdoes not wish to upgrade at step 664, the method concludes at step 699.If the user does wish to upgrade at 664, then the computing device isupgraded at step 666. Upgrades may be performed subject to payment orother consideration being provided to a software provider, for example.After the computing product is upgraded at step 666, the computingdevice is again assessed at step 620 and new assessment data is recordedand stored at step 630. With the new upgrade from step 666, thecomputing product should determine that it supports the file at step640, and therefore run the file at step 680 and conclude at step 699.

The various techniques described herein may be implemented with hardwareor software or, where appropriate, with a combination of both. Thus, themethods and apparatus of the present invention, or certain aspects orportions thereof, may take the form of program code (i.e., instructions)embodied in tangible media, such as floppy diskettes, CD-ROMs, harddrives, or any other machine-readable storage medium, wherein, when theprogram code is loaded into and executed by a machine, such as acomputer, the machine becomes an apparatus for practicing the invention.One or more programs are preferably implemented in a high levelprocedural or object oriented programming language to communicate with acomputer system. However, the program(s) can be implemented in assemblyor machine language, if desired. In any case, the language may be acompiled or interpreted language, and combined with hardwareimplementations.

The methods of the present invention may also be embodied in the form ofprogram code that is transmitted over some transmission medium, such asover electrical wiring or cabling, through fiber optics, or via anyother form of transmission, wherein, when the program code is receivedand loaded into and executed by a machine, such as an EPROM, a gatearray, a programmable logic device (PLD), a client computer, a videorecorder or the like, the machine becomes an apparatus for practicingthe invention. When implemented on a general-purpose processor, theprogram code combines with the processor to provide a unique apparatusthat operates to perform the versioning functionality of the presentinvention.

It is noted that the foregoing examples have been provided merely forthe purpose of explanation and are in no way to be construed as limitingof the present invention. While the invention has been described withreference to various embodiments, it is understood that the words whichhave been used herein are words of description and illustration, ratherthan words of limitations. Further, although the invention has beendescribed herein with reference to particular means, materials andembodiments, the invention is not intended to be limited to theparticulars disclosed herein; rather, the invention extends to allfunctionally equivalent structures, methods and uses, such as are withinthe scope of the appended claims.

1. A method for performing a system capability assessment, comprising:receiving a request to perform the assessment on a computing product;determining assessment data by analyzing at least one computing productcharacteristic comprising at least one attribute, capability, andfeature, wherein the attribute comprises at least one of an inherentsystem characteristic and a degree to which a system adheres to astandard, the capability comprises at least one of an ability of aproduct or system to effectively perform an individual function, task,class of functions, and class of tasks, and the feature comprises atleast one of a prominent system part, component, and characteristic; andstoring the assessment data.
 2. The method of claim 1, wherein saiddetermining the assessment data of the computing product comprisesperforming a plurality of assessments of the computing product.
 3. Themethod of claim 1, wherein the computing product is a single computingdevice.
 4. The method of claim 1, wherein the computing product is aserver.
 5. The method of claim 1, wherein the computing product is acluster of computing devices.
 6. The method of claim 1, furthercomprising generating a compatibility rating for the computing productbased on the assessment data.
 7. The method of claim 1, furthercomprising determining how to perform assessments based on at least oneof a plurality of factors comprising information from a data store, anapplication program interface, an operating system, a user, and acommunications channel.
 8. The method of claim 1, further comprisingproviding the assessment data to additional computing products.
 9. Themethod of claim 1, wherein said receiving the request to perform theassessment on the computing product, said determining assessment data byanalyzing at least one computing product characteristic comprising atleast one attribute, capability, and feature, and said storing theassessment data is performed by an operating system.
 10. A computerreadable medium having computer-executable instructions for carrying outthe method of: receiving a request to perform the assessment on acomputing product; determining assessment data by analyzing at least onecomputing product characteristic comprising at least one attribute,capability, and feature, wherein the attribute comprises at least one ofan inherent system characteristic and a degree to which a system adheresto a standard, the capability comprises at least one of an ability of aproduct or system to effectively perform an individual function, task,class of functions, and class of tasks, and the feature comprises atleast one of a prominent system part, component, and characteristic;generating a compatibility rating for the computing product based on theassessment data; and storing the assessment data.
 11. The computerreadable medium of claim 10, wherein the computing product is a singlecomputing device.
 12. The computer readable medium of claim 10, whereinthe computing product is a server.
 13. The computer readable medium ofclaim 10, wherein the computing product is a cluster of computingdevices.
 14. A system for performing a system capability assessment,comprising: a processor for receiving a request to perform an assessmenton a computing product and for determining assessment data, whereindetermining the assessment data comprises analyzing at least onecomputing product characteristic comprising at least one attribute,capability, and feature, wherein the attribute comprises at least one ofan inherent system characteristic and a degree to which a system adheresto a standard, the capability comprises at least one of an ability of aproduct or system to effectively perform an individual function, task,class of functions, and class of tasks, and the feature comprises atleast one of a prominent system part, component, and characteristic; anda storage device for storing assessment data comprising at least onecomputing product characteristic comprising at least one attribute,capability, and feature.
 15. The system of claim 14, wherein saidprocessor determines how to perform the assessments based on at leastone of a plurality of factors comprising information from a data store,an application program interface, an operating system, a user, and acommunications channel.
 16. The system of claim 14, wherein thecomputing product comprises at least one of a computer system, a server,a cluster of computer systems, and a computer system component.
 17. Thesystem of claim 14, wherein said processor generates a compatibilityrating for the computing product based on the assessment data.